home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / tnos / tnos100s / smtp.h < prev    next >
C/C++ Source or Header  |  1993-11-22  |  3KB  |  100 lines

  1. #ifndef    _SMTP_H
  2. #define    _SMTP_H
  3.  
  4. #define SMTPTRACE            /* enable tracing for smtp */
  5. #define MAXSESSIONS    10        /* most connections allowed */
  6. #define JOBNAME        13        /* max size of a job name with null */
  7. #define    LINELEN        256
  8. #define PLINELEN    256
  9. #define RLINELEN    512
  10. #define TLINELEN    1024
  11. #define SLINELEN    64
  12. #define MBOXLEN        8        /* max size of a mail box name */
  13.  
  14. /* types of address used by smtp in an address list */
  15. #define BADADDR        0
  16. #define LOCAL        1
  17. #define DOMAIN        2
  18. #define NNTP_GATE    3
  19.  
  20. /* a list entry */
  21. struct list {
  22.     struct list *next;
  23.     char *val;
  24.     char *orig;
  25.     char type;
  26. };
  27.  
  28. /* Per-session control block  used by smtp server */
  29. struct smtpsv {
  30.     int s;            /* the socket for this connection */
  31.     char *system;        /* Name of remote system */
  32.     char *from;        /* sender address */
  33.     struct list *to;    /* Linked list of recipients */
  34.     char *bid;        /* BID if any */
  35.     int dupbid;        /* indicates a duplicate bid */
  36.     FILE *data;        /* Temporary input file pointer */
  37. };
  38.  
  39. /* used by smtpcli as a queue entry for a single message */
  40. struct smtp_job {
  41.     struct     smtp_job *next;    /* pointer to next mail job for this system */
  42.     char    jobname[9];    /* the prefix of the job file name */
  43.     long    len;        /* length of file */
  44.     char    *from;        /* address of sender */
  45.     struct list *to;    /* Linked list of recipients */
  46. };
  47.  
  48. /* control structure used by an smtp client session */
  49. struct smtpcli {
  50.     int     s;        /* connection socket */
  51.     int32    ipdest;        /* address of forwarding system */
  52.     char    *destname;    /* domain address of forwarding system */
  53.     char    *wname;        /* name of workfile */
  54.     char    *tname;        /* name of data file */
  55.     char    buf[LINELEN];    /* Output buffer */
  56.     char    cnt;        /* Length of input buffer */
  57.     FILE    *tfile;
  58.     struct    smtp_job *jobq;
  59.     struct    list     *errlog;    
  60.     int lock;        /* In use */
  61. };
  62.  
  63. /* smtp server routing mode */
  64. #define    QUEUE    1
  65.  
  66. #define    NULLLIST    (struct list *)0
  67. #define    NULLSMTPSV    (struct smtpsv *)0
  68. #define    NULLSMTPCLI    (struct smtpcli *)0
  69. #define NULLJOB        (struct smtp_job *)0
  70.  
  71. extern int Smtpmode;
  72. extern char *Mailspool;
  73. extern char *Maillog;
  74. extern char *Mailqdir;        /* Outgoing spool directory */
  75. extern char *Routeqdir;    /* spool directory for a router program */
  76. extern char *Mailqueue;    /* Prototype of work file */
  77. extern char *Maillock;        /* Mail system lock */
  78. extern char *Alias;        /* File of local aliases */
  79. extern char *Group;        /* File of local groups */
  80.  
  81. /* In smtpserv.c: */
  82. char *ptime __ARGS((long *t));
  83. long get_msgid __ARGS((int));
  84. char *getname __ARGS((char *cp));
  85. int validate_address __ARGS((char *s));
  86. int queuejob __ARGS((FILE *dfile,char *host,struct list *to,char *from));
  87. struct list *addlist __ARGS((struct list **head,char *val,int type,char *orig));
  88. int mdaemon __ARGS((FILE *data,char *to,struct list *lp,int bounce));
  89.  
  90. /* In smtpcli.c: */
  91. int smtptick __ARGS((void *t));
  92. int mlock __ARGS((char *dir,char *id));
  93. int rmlock __ARGS((char *dir,char *id));
  94. void del_list __ARGS((struct list *lp));
  95. int32 mailroute __ARGS((char *dest));
  96. extern char *Months[];
  97.  
  98. #endif    /* _SMTP_H */
  99.  
  100.